<!-- HTML header for doxygen 1.9.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>COMMONS-NET: commonsNet.bsd.RExecClient类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">COMMONS-NET
   </div>
  </td>
    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
          <input type="text" id="MSearchField" value="" placeholder="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classcommonsNet_1_1bsd_1_1RExecClient.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-attribs">Public 属性</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classcommonsNet_1_1bsd_1_1RExecClient-members.html">所有成员列表</a>  </div>
  <div class="headertitle"><div class="title">commonsNet.bsd.RExecClient类 参考</div></div>
</div><!--header-->
<div class="contents">

<p>RExecClient实现了在4.2BSD Unix中的rexec()功能。  
 <a href="classcommonsNet_1_1bsd_1_1RExecClient.html#details">更多...</a></p>
<div class="dynheader">
类 commonsNet.bsd.RExecClient 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcommonsNet_1_1bsd_1_1RExecClient.png" usemap="#commonsNet.bsd.RExecClient_map" alt=""/>
  <map id="commonsNet.bsd.RExecClient_map" name="commonsNet.bsd.RExecClient_map">
<area href="classcommonsNet_1_1SocketClient.html" title="SocketClient类提供客户端对象访问套接字所需的基本操作。打开套接字、关闭套接字、设置超时等。" alt="commonsNet.SocketClient" shape="rect" coords="0,0,206,24"/>
<area href="classcommonsNet_1_1bsd_1_1RCommandClient.html" title="RCommandClient与RExecClient非常相似，它是从RExecClient派生而来的，并实现了在4.2BSD Unix中的rcmd()功能。" alt="commonsNet.bsd.RCommandClient" shape="rect" coords="0,112,206,136"/>
<area href="classcommonsNet_1_1bsd_1_1RLoginClient.html" title="RLoginClient与RCommandClient非常相似，它是从RCommandClient派生而来的，并使用RCommandClient中实现的rcmd()功能来实现在4...." alt="commonsNet.bsd.RLoginClient" shape="rect" coords="0,168,206,192"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a71bb3a8108a47e331fe203f0c0c02f9d"><td class="memItemLeft" align="right" valign="top">public&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a71bb3a8108a47e331fe203f0c0c02f9d">init</a> ()</td></tr>
<tr class="memdesc:a71bb3a8108a47e331fe203f0c0c02f9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">RExecClient 的默认构造器.  <br /></td></tr>
<tr class="separator:a71bb3a8108a47e331fe203f0c0c02f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f012ef41ecf8bf1e3d2284fea01d965"><td class="memItemLeft" align="right" valign="top">public override func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a4f012ef41ecf8bf1e3d2284fea01d965">disconnect</a> ()</td></tr>
<tr class="memdesc:a4f012ef41ecf8bf1e3d2284fea01d965"><td class="mdescLeft">&#160;</td><td class="mdescRight">断开与服务器的连接，关闭所有相关的打开的套接字和流。  <br /></td></tr>
<tr class="separator:a4f012ef41ecf8bf1e3d2284fea01d965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac907fac653672b5fde4088e2196f56da"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#ac907fac653672b5fde4088e2196f56da">getErrorStream</a> (): ?InputStream</td></tr>
<tr class="memdesc:ac907fac653672b5fde4088e2196f56da"><td class="mdescLeft">&#160;</td><td class="mdescRight">返回InputStream，如果从服务器请求单独的错误流，则可以从中读取远程进程的标准错误。否则，将返回None。只有在成功调用rexec()之后才会设置错误流。  <br /></td></tr>
<tr class="separator:ac907fac653672b5fde4088e2196f56da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6078f703f127a27556571e2d732e8b0e"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a6078f703f127a27556571e2d732e8b0e">getInputStream</a> (): ?InputStream</td></tr>
<tr class="memdesc:a6078f703f127a27556571e2d732e8b0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">返回InputStream，从中可以读取远程进程的标准输出。 只有在成功调用rexec()之后才会设置输入流。  <br /></td></tr>
<tr class="separator:a6078f703f127a27556571e2d732e8b0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2d4ab36f527810ab1e3fec0d43faeee"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#aa2d4ab36f527810ab1e3fec0d43faeee">getOutputStream</a> (): ?OutputStream</td></tr>
<tr class="memdesc:aa2d4ab36f527810ab1e3fec0d43faeee"><td class="mdescLeft">&#160;</td><td class="mdescRight">返回OutputStream，通过它可以写入远程进程的标准输入。 只有在成功调用rexec()之后才会设置输出流。  <br /></td></tr>
<tr class="separator:aa2d4ab36f527810ab1e3fec0d43faeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bac53801324b4b438b04b0baf5a24da"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a0bac53801324b4b438b04b0baf5a24da">isRemoteVerificationEnabled</a> ()</td></tr>
<tr class="memdesc:a0bac53801324b4b438b04b0baf5a24da"><td class="mdescLeft">&#160;</td><td class="mdescRight">返回是否启用了对提供单独错误流的远程主机的验证。默认行为是启用验证。  <br /></td></tr>
<tr class="separator:a0bac53801324b4b438b04b0baf5a24da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc925c1c499afe0cb5b9ba74c299f28e"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#acc925c1c499afe0cb5b9ba74c299f28e">rexec</a> (user: String, password: String, command: String)</td></tr>
<tr class="memdesc:acc925c1c499afe0cb5b9ba74c299f28e"><td class="mdescLeft">&#160;</td><td class="mdescRight">与 <code> rexec(user, password, command, false); </code> 相同  <br /></td></tr>
<tr class="separator:acc925c1c499afe0cb5b9ba74c299f28e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b64ff679ebcd9b58ecf876fc89cbf4c"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a2b64ff679ebcd9b58ecf876fc89cbf4c">rexec</a> (user: String, password: String, command: String, separateErrorStream: Bool)</td></tr>
<tr class="memdesc:a2b64ff679ebcd9b58ecf876fc89cbf4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">通过与RExecClient连接的服务器上的rexecd守护进程远程执行命令。  <br /></td></tr>
<tr class="separator:a2b64ff679ebcd9b58ecf876fc89cbf4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa485d861fa3997f91d0337e32e758c46"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#aa485d861fa3997f91d0337e32e758c46">setRemoteVerificationEnabled</a> (enable: Bool)</td></tr>
<tr class="memdesc:aa485d861fa3997f91d0337e32e758c46"><td class="mdescLeft">&#160;</td><td class="mdescRight">启用或禁用创建单独错误流的远程主机是否与标准输出流所连接的主机相同的验证。默认情况下启用验证。您可以随时设置此值，无论客户端当前是否已连接。  <br /></td></tr>
<tr class="separator:aa485d861fa3997f91d0337e32e758c46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcommonsNet_1_1SocketClient"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcommonsNet_1_1SocketClient')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classcommonsNet_1_1SocketClient.html">commonsNet.SocketClient</a></td></tr>
<tr class="memitem:a1bb898df45d7b393d6c2814753b05be3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a1bb898df45d7b393d6c2814753b05be3">init</a> ()</td></tr>
<tr class="memdesc:a1bb898df45d7b393d6c2814753b05be3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">默认构造函数  <br /></td></tr>
<tr class="separator:a1bb898df45d7b393d6c2814753b05be3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87551917056355777424650106857aaa inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public mut prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a87551917056355777424650106857aaa">readTimeout</a> : ?Duration</td></tr>
<tr class="separator:a87551917056355777424650106857aaa inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc17afff65b64aa296c3b55ada867ef inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public mut prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a1bc17afff65b64aa296c3b55ada867ef">writeTimeout</a> : ?Duration</td></tr>
<tr class="separator:a1bc17afff65b64aa296c3b55ada867ef inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6356afd60138e32bd7b05c8be35149d6 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a6356afd60138e32bd7b05c8be35149d6">remoteAddress</a> : IPAddress</td></tr>
<tr class="memdesc:a6356afd60138e32bd7b05c8be35149d6 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端连接到的远程地址。委托给<code><a class="el" href="">StreamingSocket#remoteAddress</a></code>  <br /></td></tr>
<tr class="separator:a6356afd60138e32bd7b05c8be35149d6 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48b65614c29c5816bddc0c0b6d9bf2df inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a48b65614c29c5816bddc0c0b6d9bf2df">remotePort</a> : UInt16</td></tr>
<tr class="memdesc:a48b65614c29c5816bddc0c0b6d9bf2df inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端连接到的远程主机的端口号  <br /></td></tr>
<tr class="separator:a48b65614c29c5816bddc0c0b6d9bf2df inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93a0598e2a9e67a8cd12779a30d65142 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a93a0598e2a9e67a8cd12779a30d65142">localAddress</a> : IPAddress</td></tr>
<tr class="memdesc:a93a0598e2a9e67a8cd12779a30d65142 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端套接字绑定到的本地地址。委托给<code><a class="el" href="">StreamingSocket#localAddress</a></code>  <br /></td></tr>
<tr class="separator:a93a0598e2a9e67a8cd12779a30d65142 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfc16ab47c94037df62fb2ba9d027f1e inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#acfc16ab47c94037df62fb2ba9d027f1e">localPort</a> : UInt16</td></tr>
<tr class="memdesc:acfc16ab47c94037df62fb2ba9d027f1e inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端绑定到的本地端口号  <br /></td></tr>
<tr class="separator:acfc16ab47c94037df62fb2ba9d027f1e inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9044380b2d1dd34779216a935fa265c inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public mut prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#af9044380b2d1dd34779216a935fa265c">defaultPort</a> : UInt16</td></tr>
<tr class="memdesc:af9044380b2d1dd34779216a935fa265c inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端应连接的默认端口。  <br /></td></tr>
<tr class="separator:af9044380b2d1dd34779216a935fa265c inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c83df8caef820abcb2ab39ebeb3ffa7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public mut prop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a0c83df8caef820abcb2ab39ebeb3ffa7">connectTimeout</a> : Duration</td></tr>
<tr class="memdesc:a0c83df8caef820abcb2ab39ebeb3ffa7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接超时时间，将传递给socket对象的connect方法。  <br /></td></tr>
<tr class="separator:a0c83df8caef820abcb2ab39ebeb3ffa7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a488725edabd4193aa85e999f834245 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a7a488725edabd4193aa85e999f834245">isConnected</a> (): Bool</td></tr>
<tr class="memdesc:a7a488725edabd4193aa85e999f834245 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">如果套接字不是None，则返回true。  <br /></td></tr>
<tr class="separator:a7a488725edabd4193aa85e999f834245 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04e993f4f4374f378f9ddf730e7d1a1a inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a04e993f4f4374f378f9ddf730e7d1a1a">setSocketFactory</a> (socketFactory: ?<a class="el" href="classcommonsNet_1_1SocketFactory.html">SocketFactory</a>): Unit</td></tr>
<tr class="separator:a04e993f4f4374f378f9ddf730e7d1a1a inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4daf93a806b1a99d35e8b2d8394b2ff inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#ad4daf93a806b1a99d35e8b2d8394b2ff">setServerSocketFactory</a> (serverSocketFactory: ?<a class="el" href="classcommonsNet_1_1ServerSocketFactory.html">ServerSocketFactory</a>): Unit</td></tr>
<tr class="separator:ad4daf93a806b1a99d35e8b2d8394b2ff inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fbcc57fadf7e3f7b9061232f3bc6303 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a0fbcc57fadf7e3f7b9061232f3bc6303">connect</a> (address: String): Unit</td></tr>
<tr class="memdesc:a0fbcc57fadf7e3f7b9061232f3bc6303 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接到远程主机  <br /></td></tr>
<tr class="separator:a0fbcc57fadf7e3f7b9061232f3bc6303 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a641075d2637ea7141ee2a535d922ef47 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a641075d2637ea7141ee2a535d922ef47">connect</a> (address: String, port: UInt16): Unit</td></tr>
<tr class="memdesc:a641075d2637ea7141ee2a535d922ef47 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接到远程主机  <br /></td></tr>
<tr class="separator:a641075d2637ea7141ee2a535d922ef47 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a5e20f3c11d7648fe8e13bbbfecc685 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a3a5e20f3c11d7648fe8e13bbbfecc685">connect</a> (address: String, port: UInt16, localAddress: Option&lt;SocketAddress&gt;): Unit</td></tr>
<tr class="memdesc:a3a5e20f3c11d7648fe8e13bbbfecc685 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接到远程主机  <br /></td></tr>
<tr class="separator:a3a5e20f3c11d7648fe8e13bbbfecc685 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ea99f7b6db651e4209ec78e8055ad45 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a1ea99f7b6db651e4209ec78e8055ad45">connect</a> (address: SocketAddress): Unit</td></tr>
<tr class="memdesc:a1ea99f7b6db651e4209ec78e8055ad45 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接到远程主机  <br /></td></tr>
<tr class="separator:a1ea99f7b6db651e4209ec78e8055ad45 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0bfe81fc4e64ac8c8cb4b0982ea6ca7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#ac0bfe81fc4e64ac8c8cb4b0982ea6ca7">connect</a> (address: SocketAddress, localAddress: Option&lt;SocketAddress&gt;): Unit</td></tr>
<tr class="memdesc:ac0bfe81fc4e64ac8c8cb4b0982ea6ca7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接到远程主机  <br /></td></tr>
<tr class="separator:ac0bfe81fc4e64ac8c8cb4b0982ea6ca7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d49495a9b64c3e848a020b509dcfdc0 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a9d49495a9b64c3e848a020b509dcfdc0">addProtocolCommandListener</a> (listener: <a class="el" href="classcommonsNet_1_1ProtocolCommandListener.html">ProtocolCommandListener</a>): Unit</td></tr>
<tr class="memdesc:a9d49495a9b64c3e848a020b509dcfdc0 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加一个ProtocolCommandListener  <br /></td></tr>
<tr class="separator:a9d49495a9b64c3e848a020b509dcfdc0 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a644174b37f378552318c6b93e44ae0e3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a644174b37f378552318c6b93e44ae0e3">removeProtocolCommandListener</a> (listener: <a class="el" href="classcommonsNet_1_1ProtocolCommandListener.html">ProtocolCommandListener</a>): Unit</td></tr>
<tr class="memdesc:a644174b37f378552318c6b93e44ae0e3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">移除一个ProtocolCommandListener  <br /></td></tr>
<tr class="separator:a644174b37f378552318c6b93e44ae0e3 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a209c171637129b711301908fe5781329 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a209c171637129b711301908fe5781329">disconnect</a> (): Unit</td></tr>
<tr class="memdesc:a209c171637129b711301908fe5781329 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">端口socket连接。应该在完成使用后以及再次连接之前调用此方法。_socket_将设为None  <br /></td></tr>
<tr class="separator:a209c171637129b711301908fe5781329 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a174f159c659d115fbb46baace12215d7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">public func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a174f159c659d115fbb46baace12215d7">verifyRemote</a> (socket: StreamingSocket)</td></tr>
<tr class="memdesc:a174f159c659d115fbb46baace12215d7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">验证给定套接字的远端是否为当前SocketClient连接的同一主机。  <br /></td></tr>
<tr class="separator:a174f159c659d115fbb46baace12215d7 inherit pub_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public 属性</h2></td></tr>
<tr class="memitem:aa2509c698c1959ecb251f10ffa181f64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#aa2509c698c1959ecb251f10ffa181f64">static let RE_DEFAULT_PORT</a> = 512u16</td></tr>
<tr class="memdesc:aa2509c698c1959ecb251f10ffa181f64"><td class="mdescLeft">&#160;</td><td class="mdescRight">默认的rexec端口。在BSD Unix中设置为512。  <br /></td></tr>
<tr class="separator:aa2509c698c1959ecb251f10ffa181f64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classcommonsNet_1_1SocketClient"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classcommonsNet_1_1SocketClient')"><img src="closed.png" alt="-"/>&#160;Public 属性 继承自 <a class="el" href="classcommonsNet_1_1SocketClient.html">commonsNet.SocketClient</a></td></tr>
<tr class="memitem:acf063b8bd9929825dc931fa75918df33 inherit pub_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#acf063b8bd9929825dc931fa75918df33">static let NETASCII_EOL</a> : String = &quot;\r\n&quot;</td></tr>
<tr class="memdesc:acf063b8bd9929825dc931fa75918df33 inherit pub_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">大多数IETF协议使用的换行符，CRLF  <br /></td></tr>
<tr class="separator:acf063b8bd9929825dc931fa75918df33 inherit pub_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:aa21dd9459a5881c3fc447c8a6c7fc1ae"><td class="memItemLeft" align="right" valign="top">protected open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#aa21dd9459a5881c3fc447c8a6c7fc1ae">createErrorStream</a> (): StreamingSocket</td></tr>
<tr class="separator:aa21dd9459a5881c3fc447c8a6c7fc1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classcommonsNet_1_1SocketClient"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classcommonsNet_1_1SocketClient')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classcommonsNet_1_1SocketClient.html">commonsNet.SocketClient</a></td></tr>
<tr class="memitem:afa2734bc5477eabf0599324d6ede038b inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">protected func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#afa2734bc5477eabf0599324d6ede038b">fireCommandSent</a> (command: String, message: String)</td></tr>
<tr class="memdesc:afa2734bc5477eabf0599324d6ede038b inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">如果有任何监听器，则向他们发送命令的详细信息。  <br /></td></tr>
<tr class="separator:afa2734bc5477eabf0599324d6ede038b inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9c596dad672de038df93ef77b63746f inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">protected open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#ae9c596dad672de038df93ef77b63746f">fireReplyReceived</a> (replyCode: Int64, reply: String)</td></tr>
<tr class="memdesc:ae9c596dad672de038df93ef77b63746f inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">如果有任何监听器，则向他们发送回复的详细信息。  <br /></td></tr>
<tr class="separator:ae9c596dad672de038df93ef77b63746f inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5133836949f8b27b41a31473654c881 inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">protected open func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#ab5133836949f8b27b41a31473654c881">_connectAction_</a> ()</td></tr>
<tr class="memdesc:ab5133836949f8b27b41a31473654c881 inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">由于存在较多的connect方法，因此提供_connectAction_方法作为在建立连接后立即执行某些操作的手段，而不是重新实现所有connect方法。  <br /></td></tr>
<tr class="separator:ab5133836949f8b27b41a31473654c881 inherit pro_methods_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a2d342da5c7a49a1184e38fe6bc57f288"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a2d342da5c7a49a1184e38fe6bc57f288">static let NULL_CHAR</a> = b'\0'</td></tr>
<tr class="separator:a2d342da5c7a49a1184e38fe6bc57f288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6477cd724aee6b76d134b9256411911a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a6477cd724aee6b76d134b9256411911a">var _errorStream_</a> : ?StreamingSocket = None</td></tr>
<tr class="memdesc:a6477cd724aee6b76d134b9256411911a"><td class="mdescLeft">&#160;</td><td class="mdescRight">如果请求单独的错误流，<code><em>errorStream</em></code>将指向一个InputStream，从中可以读取远程进程的标准错误（在调用rexec()之后）。 否则，<code><em>errorStream</em></code>将为None。  <br /></td></tr>
<tr class="separator:a6477cd724aee6b76d134b9256411911a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classcommonsNet_1_1SocketClient"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classcommonsNet_1_1SocketClient')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classcommonsNet_1_1SocketClient.html">commonsNet.SocketClient</a></td></tr>
<tr class="memitem:a3da898c3d3f8488cf8a498ce1147eaf7 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a3da898c3d3f8488cf8a498ce1147eaf7">var _socket_</a> : ?StreamingSocket</td></tr>
<tr class="memdesc:a3da898c3d3f8488cf8a498ce1147eaf7 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接使用的socket  <br /></td></tr>
<tr class="separator:a3da898c3d3f8488cf8a498ce1147eaf7 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7610863136db5773a465f7a4feb10cd5 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a7610863136db5773a465f7a4feb10cd5">var _input_</a> : ?InputStream = None</td></tr>
<tr class="memdesc:a7610863136db5773a465f7a4feb10cd5 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">socket输入流  <br /></td></tr>
<tr class="separator:a7610863136db5773a465f7a4feb10cd5 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60f2dfec175bdbd8f243aea7a7dae5ec inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a60f2dfec175bdbd8f243aea7a7dae5ec">var _output_</a> : ?OutputStream = None</td></tr>
<tr class="memdesc:a60f2dfec175bdbd8f243aea7a7dae5ec inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">socket输出流  <br /></td></tr>
<tr class="separator:a60f2dfec175bdbd8f243aea7a7dae5ec inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ae2f2d89af96526257357b68009b196 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a1ae2f2d89af96526257357b68009b196">var _hostname_</a> : ?String</td></tr>
<tr class="memdesc:a1ae2f2d89af96526257357b68009b196 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">用于连接的主机名  <br /></td></tr>
<tr class="separator:a1ae2f2d89af96526257357b68009b196 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eeb213da3426f5b5fe3b0341f628106 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a0eeb213da3426f5b5fe3b0341f628106">var _remoteSocketAddress_</a> : ?SocketAddress</td></tr>
<tr class="memdesc:a0eeb213da3426f5b5fe3b0341f628106 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">用于连接的远程套接字地址。  <br /></td></tr>
<tr class="separator:a0eeb213da3426f5b5fe3b0341f628106 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a222ed7ff95066135d7427671c17cbb51 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a222ed7ff95066135d7427671c17cbb51">var _defaultPort_</a> : UInt16</td></tr>
<tr class="memdesc:a222ed7ff95066135d7427671c17cbb51 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">客户端应连接的默认端口。  <br /></td></tr>
<tr class="separator:a222ed7ff95066135d7427671c17cbb51 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45e24f8b9f78f96b0e42499f5224c42a inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a45e24f8b9f78f96b0e42499f5224c42a">var _socketFactory_</a> : <a class="el" href="classcommonsNet_1_1SocketFactory.html">SocketFactory</a></td></tr>
<tr class="separator:a45e24f8b9f78f96b0e42499f5224c42a inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa278799518e05c3b7aeb28bcebb23375 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#aa278799518e05c3b7aeb28bcebb23375">var _serverSocketFactory_</a> : <a class="el" href="classcommonsNet_1_1ServerSocketFactory.html">ServerSocketFactory</a></td></tr>
<tr class="separator:aa278799518e05c3b7aeb28bcebb23375 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a839d81898a2aacfcf9bfd3b7b6f0ffb8 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a839d81898a2aacfcf9bfd3b7b6f0ffb8">var _connectTimeout_</a> : Duration = DEFAULT_CONNECT_TIMEOUT</td></tr>
<tr class="memdesc:a839d81898a2aacfcf9bfd3b7b6f0ffb8 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接超时时间  <br /></td></tr>
<tr class="separator:a839d81898a2aacfcf9bfd3b7b6f0ffb8 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57b01a4fe6374778b227c41a8a45b0e1 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1SocketClient.html#a57b01a4fe6374778b227c41a8a45b0e1">let _commandSupport</a> : <a class="el" href="classcommonsNet_1_1ProtocolCommandSupport.html">ProtocolCommandSupport</a></td></tr>
<tr class="memdesc:a57b01a4fe6374778b227c41a8a45b0e1 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="mdescLeft">&#160;</td><td class="mdescRight">ProtocolCommandSupport对象，用于管理ProtocolCommandListeners的注册和ProtocolCommandEvents的触发。  <br /></td></tr>
<tr class="separator:a57b01a4fe6374778b227c41a8a45b0e1 inherit pro_attribs_classcommonsNet_1_1SocketClient"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a19fdc63a2c94e06b87c80f9d0580b1ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html#a19fdc63a2c94e06b87c80f9d0580b1ee">var remoteVerificationEnabled</a> : Bool = false</td></tr>
<tr class="separator:a19fdc63a2c94e06b87c80f9d0580b1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>RExecClient实现了在4.2BSD Unix中的rexec()功能。 </p>
<p>此类可能仅用于连接到Unix系统，并且仅在rexecd守护进程配置为运行时使用，这在当今是罕见的，因为涉及到安全风险。 但是，rexec（）对于在防火墙后面的网络上执行管理任务非常有用。<br  />
 与net中其他几乎所有的client类一样，这个类派生自SocketClient，继承了它的connect方法。 使用RExecClient的方法是首先连接到服务器，调用rexec()方法，然后获取连接的输入、输出以及可选的错误流。 与远程命令的交互完全通过I/O流来控制。一旦处理完流，应该调用disconnect()来正确清理。<br  />
 默认情况下，远程进程的标准输出和标准错误流通过同一连接传输，可从getInputStream()返回的输入流中读取。 但是，可以告诉rexecd守护进程通过单独的连接返回标准错误流，该连接可从getErrorStream()返回的输入流中读取。 通过将rexec()的布尔separateErrorStream参数设置为true，可以指定应为标准错误创建单独的连接。 远程进程的标准输入可以通过getOutputSream()返回的输出流写入。<br  />
</p>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a71bb3a8108a47e331fe203f0c0c02f9d" name="a71bb3a8108a47e331fe203f0c0c02f9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71bb3a8108a47e331fe203f0c0c02f9d">&#9670;&#160;</a></span>init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public commonsNet.bsd.RExecClient.init </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RExecClient 的默认构造器. </p>
<p>初始化默认端口为 <code> RE_DEFAULT_PORT </code>. </p>

</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="aa21dd9459a5881c3fc447c8a6c7fc1ae" name="aa21dd9459a5881c3fc447c8a6c7fc1ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa21dd9459a5881c3fc447c8a6c7fc1ae">&#9670;&#160;</a></span>createErrorStream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">protected open func commonsNet.bsd.RExecClient.createErrorStream </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td>: StreamingSocket </td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a4f012ef41ecf8bf1e3d2284fea01d965" name="a4f012ef41ecf8bf1e3d2284fea01d965"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f012ef41ecf8bf1e3d2284fea01d965">&#9670;&#160;</a></span>disconnect()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public override func commonsNet.bsd.RExecClient.disconnect </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>断开与服务器的连接，关闭所有相关的打开的套接字和流。 </p>

</div>
</div>
<a id="ac907fac653672b5fde4088e2196f56da" name="ac907fac653672b5fde4088e2196f56da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac907fac653672b5fde4088e2196f56da">&#9670;&#160;</a></span>getErrorStream()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.getErrorStream </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td>: ?InputStream </td>
        </tr>
      </table>
</div><div class="memdoc">

<p>返回InputStream，如果从服务器请求单独的错误流，则可以从中读取远程进程的标准错误。否则，将返回None。只有在成功调用rexec()之后才会设置错误流。 </p>
<dl class="section return"><dt>返回</dt><dd>如果从服务器请求单独的错误流，则返回可以从中读取远程进程的标准错误的InputStream。否则，将返回None。 </dd></dl>

</div>
</div>
<a id="a6078f703f127a27556571e2d732e8b0e" name="a6078f703f127a27556571e2d732e8b0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6078f703f127a27556571e2d732e8b0e">&#9670;&#160;</a></span>getInputStream()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.getInputStream </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td>: ?InputStream </td>
        </tr>
      </table>
</div><div class="memdoc">

<p>返回InputStream，从中可以读取远程进程的标准输出。 只有在成功调用rexec()之后才会设置输入流。 </p>
<dl class="section return"><dt>返回</dt><dd>InputStream，可以从中读取远程进程的标准输出。 </dd></dl>

</div>
</div>
<a id="aa2d4ab36f527810ab1e3fec0d43faeee" name="aa2d4ab36f527810ab1e3fec0d43faeee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2d4ab36f527810ab1e3fec0d43faeee">&#9670;&#160;</a></span>getOutputStream()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.getOutputStream </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td>: ?OutputStream </td>
        </tr>
      </table>
</div><div class="memdoc">

<p>返回OutputStream，通过它可以写入远程进程的标准输入。 只有在成功调用rexec()之后才会设置输出流。 </p>
<dl class="section return"><dt>返回</dt><dd>OutputStream，通过它可以编写远程进程的标准输入。 </dd></dl>

</div>
</div>
<a id="a0bac53801324b4b438b04b0baf5a24da" name="a0bac53801324b4b438b04b0baf5a24da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bac53801324b4b438b04b0baf5a24da">&#9670;&#160;</a></span>isRemoteVerificationEnabled()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.isRemoteVerificationEnabled </td>
          <td>(</td>
          <td class="paramtype"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>返回是否启用了对提供单独错误流的远程主机的验证。默认行为是启用验证。 </p>
<dl class="section return"><dt>返回</dt><dd>如果启用了验证，则为true，如果未启用，则为false。 </dd></dl>

</div>
</div>
<a id="acc925c1c499afe0cb5b9ba74c299f28e" name="acc925c1c499afe0cb5b9ba74c299f28e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc925c1c499afe0cb5b9ba74c299f28e">&#9670;&#160;</a></span>rexec() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.rexec </td>
          <td>(</td>
          <td class="paramname"><em>user</em>:&#160;</td>
          <td class="paramtype">String, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramname"><em>password</em>:&#160;</td>
          <td class="paramtype">String, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramname"><em>command</em>:&#160;</td>
          <td class="paramtype">String&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>与 <code> rexec(user, password, command, false); </code> 相同 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>用户名 </td></tr>
    <tr><td class="paramname">password</td><td>密码 </td></tr>
    <tr><td class="paramname">command</td><td>要执行的命令 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2b64ff679ebcd9b58ecf876fc89cbf4c" name="a2b64ff679ebcd9b58ecf876fc89cbf4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b64ff679ebcd9b58ecf876fc89cbf4c">&#9670;&#160;</a></span>rexec() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.rexec </td>
          <td>(</td>
          <td class="paramname"><em>user</em>:&#160;</td>
          <td class="paramtype">String, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramname"><em>password</em>:&#160;</td>
          <td class="paramtype">String, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramname"><em>command</em>:&#160;</td>
          <td class="paramtype">String, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramname"><em>separateErrorStream</em>:&#160;</td>
          <td class="paramtype">Bool&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>通过与RExecClient连接的服务器上的rexecd守护进程远程执行命令。 </p>
<p>调用此方法后，您可以通过远程进程的标准输入、输出和错误流与远程进程进行交互。 您通常能够在远程进程的标准输出（可通过getInputStream()访问）到达文件末尾后检测到远程进程的终止。 在到达文件末尾之前断开与服务器的连接或关闭进程流并不一定会终止远程进程。<br  />
 如果请求单独的错误流，远程服务器将连接到RExecClient打开的本地套接字，提供一个独立的流，通过该流传输标准错误。 当RExecClient接受此错误流的连接时，它将进行简单的安全检查。如果连接不是源自远程服务器，则会引发IOException。 这是一种简单的保护措施，可以防止监视rexec()协商的攻击者劫持错误流。您可以使用setRemoteVerificationEnabled()禁用此行为。<br  />
 </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>服务器上用于执行命令的帐户名。 </td></tr>
    <tr><td class="paramname">password</td><td>用户帐户的纯文本密码。 </td></tr>
    <tr><td class="paramname">command</td><td>要执行的命令，包括任何参数。 </td></tr>
    <tr><td class="paramname">separateErrorStream</td><td>如果希望通过与标准输出不同的流传输标准错误，则为true。否则为False。 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aa485d861fa3997f91d0337e32e758c46" name="aa485d861fa3997f91d0337e32e758c46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa485d861fa3997f91d0337e32e758c46">&#9670;&#160;</a></span>setRemoteVerificationEnabled()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public func commonsNet.bsd.RExecClient.setRemoteVerificationEnabled </td>
          <td>(</td>
          <td class="paramname"><em>enable</em>:&#160;</td>
          <td class="paramtype">Bool</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>启用或禁用创建单独错误流的远程主机是否与标准输出流所连接的主机相同的验证。默认情况下启用验证。您可以随时设置此值，无论客户端当前是否已连接。 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>true表示启用验证，false表示禁用验证。 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="a2d342da5c7a49a1184e38fe6bc57f288" name="a2d342da5c7a49a1184e38fe6bc57f288"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d342da5c7a49a1184e38fe6bc57f288">&#9670;&#160;</a></span>static let NULL_CHAR</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">commonsNet.bsd.RExecClient.static let NULL_CHAR = b'\0'</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aa2509c698c1959ecb251f10ffa181f64" name="aa2509c698c1959ecb251f10ffa181f64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2509c698c1959ecb251f10ffa181f64">&#9670;&#160;</a></span>static let RE_DEFAULT_PORT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">commonsNet.bsd.RExecClient.static let RE_DEFAULT_PORT = 512u16</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>默认的rexec端口。在BSD Unix中设置为512。 </p>

</div>
</div>
<a id="a6477cd724aee6b76d134b9256411911a" name="a6477cd724aee6b76d134b9256411911a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6477cd724aee6b76d134b9256411911a">&#9670;&#160;</a></span>var _errorStream_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">commonsNet.bsd.RExecClient.var _errorStream_ : ?StreamingSocket = None</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>如果请求单独的错误流，<code><em>errorStream</em></code>将指向一个InputStream，从中可以读取远程进程的标准错误（在调用rexec()之后）。 否则，<code><em>errorStream</em></code>将为None。 </p>

</div>
</div>
<a id="a19fdc63a2c94e06b87c80f9d0580b1ee" name="a19fdc63a2c94e06b87c80f9d0580b1ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19fdc63a2c94e06b87c80f9d0580b1ee">&#9670;&#160;</a></span>var remoteVerificationEnabled</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">commonsNet.bsd.RExecClient.var remoteVerificationEnabled : Bool = false</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>src/bsd/<a class="el" href="r__exec__client_8cj.html">r_exec_client.cj</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.9.6-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacecommonsNet.html">commonsNet</a></li><li class="navelem"><a class="el" href="namespacecommonsNet_1_1bsd.html">bsd</a></li><li class="navelem"><a class="el" href="classcommonsNet_1_1bsd_1_1RExecClient.html">RExecClient</a></li>
    <li class="footer">制作者 <img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
  </ul>
</div>
</body>
</html>
